package com.atguigu.servicebase.exceptionhandler;

import com.atguigu.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Author panghl
 * @Date 2020/12/26 19:26
 * @Description 统一异常处理
 **/
@ControllerAdvice
@Slf4j
@SuppressWarnings("all")
public class GlobalExceptionHandler {

  //指定出现什么异常执行这个方法
  @ExceptionHandler(Exception.class)
  @ResponseBody //为了返回数据
  public R error(Exception e){
    log.error(e.getMessage());
    e.printStackTrace();
    return R.error().message("执行了全局异常处理");
  }

  //特定异常
  @ExceptionHandler(ArithmeticException.class)
  @ResponseBody
  public R nullError(ArithmeticException e){
    log.error(e.getMessage());
    e.printStackTrace();
    return R.error().message("执行了空指针异常");
  }

  //自定义异常
  @ExceptionHandler(ELeanExeception.class)
  @ResponseBody
  public R eLeanError(ELeanExeception e){
    log.error(e.getMessage());
    e.printStackTrace();
    return R.error().code(e.getCode()).message(e.getMessage());
  }

}
